package pfc.etsii.ull.es.shared.utilidades;

import java.util.ArrayList;
import java.util.List;

public class Conversor {

	private static List<Integer> castToInt(List<String> lista) {
		
		List<Integer> resultado = new ArrayList<Integer>();
		
		for (Object elem : lista) {
			resultado.add(Integer.parseInt(elem.toString()));
		}
		
		return resultado;
		
	}
	
	
	private static List<Float> castToFloat(List<String> lista) {
		
		List<Float> resultado = new ArrayList<Float>();
		
		for (Object elem : lista) {
			resultado.add(Float.parseFloat(elem.toString()));
		}
	
		return resultado;
	}
	
	private static List<Double> castToDouble(List<String> lista) {
		
		List<Double> resultado = new ArrayList<Double>();
		
		for (Object elem : lista) {
			resultado.add(Double.parseDouble(elem.toString()));
		}
	
		return resultado;
	}
	
	
	private static List<Number> castToNumber(List<String> lista) {
		
		List<Number> resultado = new ArrayList<Number>();
		
		for (String elem : lista) {
			if (elem != null)
				resultado.add(Double.parseDouble(elem.toString()));
		}
	
		return resultado;
	}
	
	
	public static Double[] toArrayDouble(List<String> lista) {
		
		return castToDouble(lista).toArray(new Double[lista.size()]);
		
	} 
	
	public static Float[] toArrayFloat(List<String> lista) {
		
		return castToFloat(lista).toArray(new Float[lista.size()]);
		
	} 
	
	public static Integer[] toArrayInteger(List<String> lista) {
		
		return castToInt(lista).toArray(new Integer[lista.size()]);
		
	} 
	
	public static String[] toArrayString(List<String> list) {
		
		return list.toArray(new String[list.size()]);
		
	}
	
	public static Number[] toArrayNumber(List<String> list) {
		
		return castToNumber(list).toArray(new Number[list.size()]);
	}
	
	
	public static List<String> ascii2num(List<String> lista) {
		
		List<String> resultado = new ArrayList<String>();
		
		for (String elem : lista) {
			if (elem != null) {
				Double valorDouble = (double) elem.charAt(0);
				String prueba = valorDouble.toString();
				resultado.add(prueba);
			} else
				resultado.add("0");
		}
		return resultado;
	}
	
	
}
